10 GRAPH
20 LOCATE 2,4:PRINT "      ս":LOCATE 3,8:PRINT "˻"
30 LOCATE 4,5:PRINT "Version 1.00"
60 Z=51:K$=INKEY$
70 OPEN "SeaData" FOR RANDOM AS #1
80 IF LOF(1)=0 THEN 90 ELSE 115
90 GRAPH:LOCATE 2,1:PRINT "ERROR":PRINT "    ļѰʧܣִSeaMPSignUp.BAS"
100 LOCATE 5,9:PRINT "ȷ";:BOX 64,64,95,80,1,2:K$=INKEY$
110 IF ASC(K$)=13 THEN CLOSE #1:POKE 199,155 ELSE BEEP: GOTO 100
115 CLOSE #1
120 CLEAR:GRAPH:LOCATE 3,6:PRINT "Loading..."
122 FOR I=1 TO 2:SL(I,1)=2:SL(I,2)=3:SL(I,3)=4:SL(I,4)=4:SL(I,5)=5:NEXT I
125 DIM SEA(2,10,10):DIM COV(10,10):DIM JX(2):DIM JY(2):DIM HITX(2):DIM HITY(2)
126 DIM SN$(5):DIM EMHY(100)
127 DIM SEN$(3,5):DIM RANK$(6):DIM KI$(2):DIM RANS$(6):DIM HELP$(20):DIM EMHX(100)
130 OPEN "SeaData" FOR INPUT AS #1
140 INPUT #1,COM$,KI$(1),KI$(2)
150 FOR I=1 TO 5:INPUT #1,SN$(I):NEXT I
160 FOR M=1 TO 3
170 FOR I=1 TO 5:INPUT #1,SEN$(M,I):NEXT I
180 NEXT M
190 FOR I=1 TO 6:INPUT #1,RANK$(I):NEXT I
200 FOR I=1 TO 6:INPUT #1,RANS$(I):NEXT I
210 FOR I=1 TO 16:INPUT #1,HELP$(I):NEXT I
215 CLOSE #1:RANK=6:CLEAN$="                  "
218 SE$(1)="䣡󺣡":SE$(2)="һˡ":SE$(3)="٣ڴĶѽ"
220 GRAPH
230 PRINT "       ˵","     1.ʼϷ","     2.Ϸ˵","     3.汾˵"
240 PRINT "     4.˳Ϸ";
250 K$=INKEY$
260 IF K$="b" THEN 430
270 IF K$="n" THEN 340
280 IF K$="m" THEN 310
290 IF K$="g" OR ASC(K$)=27 THEN POKE 199,155
300 BEEP: GOTO 250
310 GRAPH
320 PRINT "汾v1.00","ƣLyster.S.K","дLyster.S.K","QQ27138435","<>";
330 K$=INKEY$:IF ASC(K$)=27 THEN 220 ELSE BEEP: GOTO 330
340 SCR=1
350 GRAPH
355 FOR I=SCR TO SCR+4
360 LOCATE I-SCR+1,2:PRINT HELP$(I);
370 NEXT I
380 K=ASC(INKEY$)
390 IF K=20 AND SCR>1 THEN SCR=SCR-1: GOTO 350
395 IF K=19 AND SCR>5 THEN SCR=SCR-5: GOTO 350
396 IF K=19 AND SCR<=5 THEN SCR=1: GOTO 350
400 IF K=21 AND SCR<12 THEN SCR=SCR+1: GOTO 350
405 IF K=14 AND SCR<12 THEN SCR=SCR+5: GOTO 350
410 IF K=27 THEN  GOTO 220
420 BEEP: GOTO 380
430 GRAPH
440 PRINT "ѡֵȼ":LOCATE 5,1:PRINT "1.00";
450 FOR I=1 TO 7:BOX 7,13+I*6,23,15+I*6,1:NEXT I:LINE 30,23,43,23:LINE 44,19,44,27
460 DRAW 45,19:DRAW 45,27
470 IF ERA<>0 THEN BOX 5,11+ERA*6,25,17+ERA*6,0,0: GOTO 480 ELSE 490
480 LINE 26,14+ERA*6,29,14+ERA*6,0:LINE 29,14+ERA*6,29,23,0
490 BOX 5,11+RANK*6,25,17+RANK*6
500 LINE 26,14+RANK*6,29,14+RANK*6:LINE 29,14+RANK*6,29,23
510 LOCATE 2,7:PRINT "              ":IF RANK<7 THEN LOCATE 2,7:PRINT RANK$(RANK)
520 IF RANK=7 THEN LOCATE 2,7:PRINT "    "
525 FOR I=3 TO 5:LOCATE I,6:PRINT "              ";:NEXT I
530 IF RANK<7 THEN 540 ELSE 590
540 PRI$=RANS$(RANK):TIM=INT(LEN(RANS$(RANK))/14)
550 FOR I=1 TO TIM
560 LOCATE I+2,6:PRINT MID$(PRI$,(I-1)*14+1,14);
570 NEXT I
580 LOCATE I+2,6:PRINT RIGHT$(PRI$,LEN(PRI$)-14*(I-1));
590 K=ASC(INKEY$)
600 IF K=20 AND RANK>1 THEN ERA=RANK:RANK=RANK-1: GOTO 470
610 IF K=21 AND RANK<7 THEN ERA=RANK:RANK=RANK+1: GOTO 470
620 IF K=27 THEN 220
630 IF K=13 THEN 650
640 BEEP: GOTO 590
650 IF RANK=7 THEN  GOTO 220
660 TEXT 
670 PRINT COM$;"С8 "
680 INPUT "] ";NAME$
690 IF LEN(NAME$)=0 THEN 430
700 IF LEN(NAME$)>8 THEN BEEP: GOTO 660
705 IF INT(LEN(NAME$)/2)<>LEN(NAME$)/2 THEN NAME$=NAME$+" "
710 CLS:LOCATE 3,4:PRINT "Ϸ ..."
720 FOR I=5 TO 1 STEP -1
730 JX=INT(RND(1)*(11-SL(1,I)))+1:JY=INT(RND(1)*(11-SL(1,I)))+1:DR=INT(RND(1)*2)+1
740 FOR M=1 TO SL(1,I)
750 ON DR GOTO 760,770
760 IF SEA(1,JX-1+M,JY)=0 THEN 780 ELSE 730
770 IF SEA(1,JX,JY-1+M)=0 THEN 780 ELSE 730
780 NEXT M
790 FOR M=1 TO SL(1,I)
800 ON DR GOTO 810,820
810 SEA(1,JX-1+M,JY)=I: GOTO 830
820 SEA(1,JX,JY-1+M)=I: GOTO 830
830 NEXT M
840 NEXT I
850 GRAPH:LOCATE 1,11:PRINT "":LOCATE 2,11:PRINT "":LOCATE 3,9:PRINT ""
855 LOCATE 4,9:PRINT ""
860 FOR I=1 TO 11
870 LINE 3,6*I-4,63,6*I-4:LINE 6*I-3,2,6*I-3,62
880 LINE 157,6*I-4,98,6*I-4:LINE 163-6*I,2,163-6*I,62
890 NEXT I
900 FOR Y=1 TO 10
910 FOR X=1 TO 10
920 LINE 6*X-1,6*Y+1,6*X+2,6*Y+1:LINE 6*X+2,6*Y-2,6*X+2,6*Y+1
930 NEXT X
940 NEXT Y
950 LOCATE 5,1:PRINT COM$;"벿𽢶";:K$=INKEY$
960 FOR I=5 TO 1 STEP -1
965 JX=1:JY=1:DR=1:WL=SL(2,I):EJX=0:EJY=0:EDR=1:ZI=1
970 LOCATE 5,1:PRINT CLEAN$;:LOCATE 5,1:PRINT "벿";SN$(6-I);
980 IF ZI=0 THEN 1090
985 IF EJX<>0 THEN 990 ELSE 1040
990 FOR M=1 TO WL
1000 ON EDR GOTO 1010,1020
1010 BOX 93+(EJX+M-1)*6,6*EJY-2,96+(EJX+M-1)*6,6*EJY+1,1,2: GOTO 1030
1020 BOX 93+EJX*6,6*(EJY+M-1)-2,96+EJX*6,6*(EJY+M-1)+1,1,2
1030 NEXT M
1040 IF EDR<>DR THEN EDR=DR
1045 FOR M=1 TO WL
1050 ON DR GOTO 1060,1070
1060 BOX 93+(JX+M-1)*6,6*JY-2,96+(JX+M-1)*6,6*JY+1,1,2: GOTO 1080
1070 BOX 93+JX*6,6*(JY+M-1)-2,96+JX*6,6*(JY+M-1)+1,1,2
1080 NEXT M
1090 K=ASC(INKEY$)
1100 IF K=20 AND JY>1 THEN EJY=JY:EJX=JX:JY=JY-1:ZI=1: GOTO 980
1110 IF K=23 AND JX>1 THEN EJY=JY:EJX=JX:JX=JX-1:ZI=1: GOTO 980
1120 ON DR GOTO 1130,1160
1130 IF K=22 AND JX<11-WL THEN EJX=JX:EJY=JY:JX=JX+1:ZI=1: GOTO 980
1140 IF K=21 AND JY<10 THEN EJX=JX:EJY=JY:JY=JY+1:ZI=1: GOTO 980
1150 GOTO 1180
1160 IF K=22 AND JX<10 THEN EJX=JX:EJY=JY:JX=JX+1:ZI=1: GOTO 980
1170 IF K=21 AND JY<11-WL THEN EJX=JX:EJY=JY:JY=JY+1:ZI=1: GOTO 980
1180 IF K=99 AND JX<=11-WL AND JY<=11-WL THEN EDR=DR:EJX=JX:EJY=JY:DR=3-DR:ZI=1: GOTO 980
1190 IF K=13 THEN 1220
1200 IF K=27 THEN 120
1210 BEEP: GOTO 1090
1220 FOR M=1 TO WL
1230 ON DR GOTO 1240,1250
1240 IF SEA(2,JX+M-1,JY)=0 THEN 1260 ELSE 1210
1250 IF SEA(2,JX,JY+M-1)=0 THEN 1260 ELSE 1210
1260 NEXT M
1270 LOCATE 5,1:PRINT CLEAN$;:LOCATE 5,1:PRINT "ȷY/N";:K$=INKEY$
1280 IF K$="y" THEN 1290 ELSE ZI=0: GOTO 970
1290 FOR M=1 TO WL
1300 ON DR GOTO 1310,1320
1310 SEA(2,JX+M-1,JY)=I: GOTO 1330
1320 SEA(2,JX,JY+M-1)=I
1330 NEXT M
1340 NEXT I
1350 LOCATE 5,1:PRINT CLEAN$;:LOCATE 5,1:PRINT "Ժ ...";
1360 FAI=7+(RANK-1)*INT(RND(1)*5+8):LEA=INT(RND(1)*4+1)*2+5:STRI=INT(RND(1)*100)+1
1370 FOR I=1 TO FAI
1380 STRI=STRI+LEA
1390 IF STRI>100 THEN STRI=STRI-100
1400 EHIY=INT((STRI+9)/10):EHIX=STRI-10*(EHIY-1)
1410 IF SEA(2,EHIX,EHIY)=0 THEN EMHX(I)=EHIX:EMHY(I)=EHIY ELSE 1380
1420 NEXT I
1430 BEEP:G=1
1440 FOR X=1 TO 10
1450 FOR Y=1 TO 10
1460 IF SEA(2,X,Y)<>0 THEN EMHX(G+FAI)=X:EMHY(G+FAI)=Y:G=G+1
1470 NEXT Y
1480 NEXT X
1490 BEEP:ZHO=G+FAI-1
1500 FOR I=1 TO RANK*10
1510 A=INT(RND(I)*ZHO+1):B=INT(RND(I)*ZHO+1):IF A=B THEN 1510
1520 SWAP EMHX(A),EMHX(B):SWAP EMHY(A),EMHY(B)
1530 NEXT I
1540 BEEP:LOCATE 5,1:PRINT CLEAN$;:LOCATE 5,1:PRINT "սʼ";:NC$=NAME$+COM$
1550 HITX=5:HITY=5:ROU=1
1560 IF EHX<>0 THEN BOX EHX*6-2,EHY*6-3,EHX*6+2,EHY*6+1,1,2
1570 BOX HITX*6-2,HITY*6-3,HITX*6+2,HITY*6+1,1,2
1580 K=ASC(INKEY$)
1590 IF K=23 AND HITX>1 THEN EHX=HITX:EHY=HITY:HITX=HITX-1: GOTO 1560
1600 IF K=22 AND HITX<10 THEN EHX=HITX:EHY=HITY:HITX=HITX+1: GOTO 1560
1610 IF K=21 AND HITY<10 THEN EHX=HITX:EHY=HITY:HITY=HITY+1: GOTO 1560
1620 IF K=20 AND HITY>1 THEN EHX=HITX:EHY=HITY:HITY=HITY-1: GOTO 1560
1630 IF K=13 THEN EHX=0:EHY=0: GOTO 1700
1640 IF K=27 THEN  GOTO 1660
1650 BEEP: GOTO 1580
1660 LOCATE 5,1:PRINT CLEAN$;:LOCATE 5,1:PRINT "ȷ˳Y/N";
1670 K$=INKEY$
1680 IF K$="y" THEN 120
1690 LOCATE 5,1:PRINT CLEAN$;: GOTO 1580
1700 IF COV(HITX,HITY)<>0 THEN BEEP: GOTO 1580
1705 COV(HITX,HITY)=1
1710 IF SEA(1,HITX,HITY)=0 THEN 1790 ELSE 1720
1720 SHKI=SEA(1,HITX,HITY):SL(1,SHKI)=SL(1,SHKI)-1
1730 BOX HITX*6-2,HITY*6-3,HITX*6+2,HITY*6+1,1,0:BOX HITX*6-1,HITY*6-2,HITX*6+2,HITY*6+1,1
1740 IF SL(1,SHKI)=0 THEN SANK(1)=SANK(1)+1 ELSE 1780
1750 PRI$=NC$+KI$(2)+SN$(6-SHKI)+SEN$(2,INT(RND(1)*5+1))
1760 IF SANK(1)=5 THEN WIN=1
1770 TU=1: GOTO 1820
1780 PRI$=NC$+KI$(2)+SN$(6-SHKI)+SEN$(1,INT(RND(1)*5+1)):TU=1: GOTO 1820
1790 BOX HITX*6-2,HITY*6-3,HITX*6+2,HITY*6+1,1,0:LINE HITX*6-2,HITY*6-3,HITX*6+2,HITY*6+1
1800 LINE HITX*6+2,HITY*6-3,HITX*6-2,HITY*6+1
1801 LOCATE 5,1:PRINT CLEAN$;:LOCATE 5,1:PRINT SE$(INT(RND(1)*3)+1);
1805 K=ASC(INKEY$):IF K=48 THEN LOCATE 5,1:PRINT CLEAN$;: GOTO 1940 ELSE BEEP: GOTO 1805
1810 PRI$=NC$+SEN$(3,INT(RND(1)*5+1)):TU=1
1820 LIN=1:ZLI=INT((LEN(PRI$)-1)/18)+1
1830 LOCATE 5,1:PRINT CLEAN$;
1840 IF LIN<ZLI THEN LOCATE 5,1:PRINT MID$(PRI$,(LIN-1)*18+1,18);: GOTO 1860
1850 IF LIN=ZLI THEN LOCATE 5,1:PRINT RIGHT$(PRI$,LEN(PRI$)-18*(LIN-1));
1860 K=ASC(INKEY$)
1870 IF K=20 AND LIN>1 THEN LIN=LIN-1: GOTO 1830
1880 IF K=21 AND LIN<ZLI THEN LIN=LIN+1: GOTO 1830
1890 IF K=48 THEN PRI$="                  ": GOTO 1910
1900 BEEP: GOTO 1860
1910 IF WIN<>0 THEN 2090
1920 ON TU GOTO 1940,1930
1930 LOCATE 5,1:PRINT CLEAN$;: GOTO 1560
1940 LOCATE 5,1:PRINT CLEAN$;:TU=2:EX=EMHX(ROU):EY=EMHY(ROU):ROU=ROU+1
1950 IF SEA(2,EX,EY)=0 THEN 1960 ELSE 1990
1960 BOX EX*6+92,EY*6-3,EX*6+96,EY*6+1,1,0:LINE EX*6+92,EY*6-3,EX*6+96,EY*6+1
1970 LINE EX*6+96,EY*6-3,EX*6+92,EY*6+1:BOX EX*6+92,EY*6-3,EX*6+96,EY*6+1,1,2
1980 GOTO 2060
1990 SHKI=SEA(2,EX,EY):SL(2,SHKI)=SL(2,SHKI)-1
1995 BOX EX*6+92,EY*6-3,EX*6+96,EY*6+1,1,2
2000 IF SL(2,SHKI)=0 THEN SANK(2)=SANK(2)+1 ELSE 2040
2010 PRI$=NC$+KI$(1)+SN$(6-SHKI)+SEN$(2,INT(RND(1)*5+1))
2020 IF SANK(2)=5 THEN WIN=2
2030 GOTO 1820
2040 LOCATE 5,1:PRINT CLEAN$;:LOCATE 5,1:PRINT "ҷ";
2042 K=ASC(INKEY$):IF K=48 THEN LOCATE 5,1:PRINT CLEAN$;: GOTO 1560 ELSE BEEP: GOTO 2040
2045 PRI$=NC$+KI$(1)+SN$(6-SHKI)+SEN$(1,INT(RND(1)*5+1))
2050 GOTO 1820
2060 K=ASC(INKEY$)
2070 IF K=48 THEN 2080 ELSE BEEP: GOTO 2060
2080 BOX EX*6+92,EY*6-3,EX*6+96,EY*6+1,1,2: GOTO 1560
2090 LOCATE 5,1:PRINT CLEAN$;
2100 ON WIN GOTO 2110,2140
2110 LOCATE 5,1:PRINT NAME$;"ʤ";
2120 K=ASC(INKEY$)
2130 IF K=48 THEN 120 ELSE BEEP: GOTO 2120
2140 LOCATE 5,1:PRINT "Իʤ";
2150 FOR X=1 TO 10
2160 FOR Y=1 TO 10
2170 IF COV(X,Y)=0 AND SEA(1,X,Y)<>0 THEN BOX 6*X-1,6*Y-2,6*X+2,6*Y+1
2180 NEXT Y
2190 NEXT X
2200 GOTO 2120
